<?php
require_once 'BaseController.php';

/**
 * 住所検索クラス<br />
 *
 * @package    apamanshop
 * @author     SS山本
 * @copyright
 */
class Search_JyusyosearchController extends Search_BaseController
{
    /**
     * 初期処理（オーバライド）
     */
    public function preDispatch()
    {
		$this->setMainTemplate('cms_search.tpl');

		// 共通モデルインスタンス生成
        $this->_model_common = new Search_Model_Common();

        // パラメータの取得
        $this->_params = $this->getParameters();

        // グローバルナビから遷移してきた場合
		if ($this->isGlobalNavi())
		{
			$this->_params = Apm_Util_GlobalNavi_Common::transitionJudge(Apm_Config_Search::SRHKBN_JYUSYO);
			// パラメータの補足
			Apm_Bukkenurl::convertSearchParam($this->_params);
			// canonical
			$this->addMetaCanonical($this->_config['apm']['baseurl'] . 'search/jyusyosearch/');
		}

		//都道府県一覧（静的ページ）の初期化処理
		if (!$this->_model_common->checkvalue($this->_params, "PrefCd")){
			$this->_baseurl    = $this->_config['apm']['baseurl'];
			$this->_aplbaseurl = $this->_config['apm']['apl']['static']['baseurl'];
		}
		//動的ページの初期化処理
		else{
			parent::preDispatch();
		}
    }

	public function indexAction()
	{
		/*
		 * 基本情報設定
		 */
		if (Apm_Config_Search::RENEW_2012) {
			$this->_display_path = APPLICATION_PATH . '/modules/search/views/scripts/search_new.tpl';
			$this->_newTemplate = true;
			$this->_import_seo_search = true;
			// テンプレート変更
			$this->_shikucyoson_helper  = $this->getApmHelper('selsikucyoson_new.tpl');
			$this->_shikucyoson2_helper = $this->getApmHelper('selsikucyoson2_new.tpl');
			$this->_cyo_helper          = $this->getApmHelper('selcyo_new.tpl');
			// JavaScript
			$this->addMetaJs('/common_new/js/import.js');
			// CSS
			$this->addMetaCss('/common_new/css/sub02.css',array('type' => 'text/css','media' => 'all'));
		} else {
			$this->_display_path = APPLICATION_PATH . '/modules/search/views/scripts/search.tpl';
			//CSSの定義（デザイン）
			$this->addMetaCss('/css/search/search.css',array('type' => 'text/css','media' => 'all'));
			$this->addMetaCss('/css/shop/shop.css',array('type' => 'text/css','media' => 'all'));
		}
		
		/*
		 * 検索画面振り分け
		 */
		//【静的ページの処理】
        // 都道府県検索(初期呼び出し時)
		if (! $this->_model_common->checkvalue($this->_params, "PrefCd"))
		{
			//都道府県の選択を画面変数にセット
			if(!empty($this->_params['RePrefCd']) && is_array($this->_params['RePrefCd'])){
				foreach($this->_params['RePrefCd'] as $prePrefCd){
					$this->_data['prePrefCd'][$prePrefCd] = 'on';
				}
			}

			if ($this->_newTemplate) {
				$this->_display_path = APPLICATION_PATH . '/modules/search/views/scripts/static_search_new.tpl';
				// タイトル、Description、Keywords設定
				$this->setDescription("住所から探す".Apm_Config_Search::NEW_DESCRIPTION_ADD);
				$this->setKeywords(Apm_Config_Search::NEW_KEYWORDS_ADD);
				$this->setTitle("住所から探す".Apm_Config_Search::NEW_TITLE_ADD.Apm_Config_Search::TITLE_ADDTAIL);
				
				$this->_data['h1_title'] = '住所から探す。'.Apm_Config_Seo::H1_ADDTAIL;
				
				// 人気のエリアtpl読み込み
				$pop_tpl = $this->getApmHelper(APPLICATION_PATH . '/modules/common/views/helpers/pop_area.tpl');
				$this->_data['pop_area_block'] = $pop_tpl->getBlock("");
				// SEO検索ブロック
				$this->_data['seo_search_data']['PREF'] = Apm_Seo::getRandomPref(5);
				$this->_data['seo_search_data']['KODAWARI'] = Apm_Seo::getSeoImpKodawari(3,3);
				$this->_data['seo_search_tpl'] = APPLICATION_PATH . '/modules/common/views/scripts/seo_search.tpl';
				
			} else {
				$this->_display_path = APPLICATION_PATH . '/modules/search/views/scripts/static_search.tpl';
				// JavaScript
				$this->addMetaJs('/app/js/search/Seltodohuken.js');
				// タイトル、Description、Keywords設定
				$this->setDescription(Apm_Config_Search::DESCRIPTION_TOP);
				$this->setKeywords(Apm_Config_Search::KEYWORD_TOP);
				$this->setTitle("住所から探す".Apm_Config_Search::TITLE_ADDTAIL);
			}

			// リクエストデータ設定
			//  左ペインの中で使用するので、ここで設定しておく。
			if ($this->isGlobalNavi()){
				$this->_data['request'] = $this->_params;
			} else {
				$this->_data['request'] = $this->getParameters();
			}

			// パンくずの設定
			$this->setStaticBreadcrumb();

			// パラメータのhiddenタグ生成
			$this->_data['hiddenTag'] = Apm_Util::generateHiddenTag($this->_params);

			// アンカー
			$this->setAnchorLink2('住所から賃貸情報を探す&nbsp;ページトップへ');
			//$this->setAnchorLink('<p class="pagetop"><a href="javascript:backToTop()"><strong>'.ltrim($meta_data["page_title"].' ',' ').'ページのトップへ</strong></a></p>');

			// 表示
			$this->display($this->_display_path);
			exit;
		}
		//【動的ページの処理】
		else{
			/*
			 * 基本情報設定
			 */
			// 検索区分
			$this->setSearchKbn(Apm_Config_Search::SRHKBN_JYUSYO, "jyusyosearch");

			/*
			 * モデルオブジェクト生成
			 */
			$this->_model_sikucyoson = new Search_Model_Selsikucyoson();
			$this->_model_cyo        = new Search_Model_Selcyo();

			// 政令指定都市・市区検索
			// （市区町村選択画面で検索時）
			if ( ! $this->_model_common->checkvalue($this->_params, "CityCd")
			         && $this->_model_common->checkvalue($this->_params, "SiteitosiCd"))
			{

				$this->_data['selcity'] = array();
				$this->_data['selcity'] = $this->_model_sikucyoson->getSiteiShikuData($this->_params, "1");

				// 表示用データに変換
				$this->_model_sikucyoson->convertShikucyosonData($this->_data);
				// 静的URL挿入
				Apm_Bukkenurl::generateSearchStaticUrl($this->_params, $this->_data['Mapping'], Apm_Config_Search::SRHKBN_JYUSYO);

				if ($this->_newTemplate) {
					// H1のタイトル
					$this->_data['h1_title'] = "住所から検索　&gt;&gt;　市区町村を選択してください。";
					// ブロックタイトル
					$this->_data['block_title'] = 'エリアで絞り込む';
					// リード文
					$this->_data['block_text'] = Apm_Config_Search::SEOSTR_SITEISTR.'{&nbsp;の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
												.Apm_Config_Search::ALIAS_TYPE.'情報をエリアで絞り込みたい方はこちらから。';
				} else {
					// H1のタイトル
					$this->_data['h1_title'] = "住所から検索　&gt;&gt;　市区町村を選択してください。";
					// ブロックタイトル
					$this->_data['block_title'] = 'エリアで絞り込む';
					// リード文
					$this->_data['block_text'] = Apm_Config_Search::SEOSTR_SITEISTR.'{の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
												.Apm_Config_Search::ALIAS_TYPE.'情報をエリアで絞り込みたい方はこちらから。';
					// JavaScript
					$this->addMetaJs('/app/js/search/Selsikucyoson.js');
				}
				$this->_data['selSiteitosiKbn'] = "1";
				$this->_main_helper = $this->_shikucyoson_helper;
			}
			// 市区町村検索
			// （都道府県検索画面で検索時）
			else if (! $this->_model_common->checkvalue($this->_params, "CityCd"))
			{
				$this->_data['selcity'] = array();
				$this->_data['SelCyoNull'] = '1';
				
				// ----- INSERT Start 2011/06/20 賃貸TOP　初期費用・ダブルゼロ分割対応 SS Ishii-n -----
				if (isset($this->_params['syokihiyo']) && (0 == strcmp('w0', $this->_params['syokihiyo']))) {
					$this->_params['shikireizero'] = 'on';
				}
				// ----- INSERT End   2011/06/20 賃貸TOP　初期費用・ダブルゼロ分割対応 SS Ishii-n -----
				if ((0 == strcmp('on', $this->_params['shikikin_nashi'])) || (0 == strcmp('on', $this->_params['reikin_nashi'])) || (0 == strcmp('on', $this->_params['shikireizero'])))
				{
					$this->_data['selcity'] = $this->_model_sikucyoson->getShikucyosonData($this->_params);
					// w0のLPから来た時は静的URLを使わない&カウントは０で表示しない
					// 表示用データに変換
					$this->_model_sikucyoson->convertShikucyosonData($this->_data, '1');
					$this->_main_helper = $this->_shikucyoson_helper;
					// ----- INSERT Start 2011/06/20 賃貸TOP　初期費用・ダブルゼロ分割対応 SS Ishii-n -----
					if (isset($this->_params['syokihiyo']) && (0 == strcmp('w0', $this->_params['syokihiyo']))) {
						unset($this->_params['shikireizero']);
					}
					// ----- INSERT End   2011/06/20 賃貸TOP　初期費用・ダブルゼロ分割対応 SS Ishii-n -----
				}
				else if (isset($this->_params['syokihiyo']))
				{
					$this->_data['selcity'] = $this->_model_sikucyoson->getSyokihiyoShikucyosonData($this->_params);
					// 表示用データに変換
					$this->_model_sikucyoson->convertShikucyosonData($this->_data);
					// 静的URL挿入
					Apm_Bukkenurl::generateSearchStaticUrl($this->_params, $this->_data['Mapping'], Apm_Config_Search::SRHKBN_JYUSYO, 'syokihiyo='.$this->_params['syokihiyo']);
					$this->_main_helper = $this->_shikucyoson2_helper;
				}
				// お宝キャンペーン -> 家電部屋キャンペーン
				/* キャンペーン検索を使用するため削除
				else if(array_key_exists('campaign',$this->_params) && in_array(Apm_Config_Search::KADEN_CAMPAIGN_CD,$this->_params['campaign']))
				//else if(array_key_exists('campaign',$this->_params) && in_array(Apm_Config_Search::OTAKARA_CAMPAIGN_CD,$this->_params['campaign']))
				{

					$this->_data['selcity'] = $this->_model_sikucyoson->getOtakaraShikucyosonData($this->_params);

					// 表示用データに変換
					$this->_model_sikucyoson->convertShikucyosonData($this->_data);
					// 静的URL挿入
					Apm_Bukkenurl::generateSearchStaticUrl($this->_params, $this->_data['Mapping'], Apm_Config_Search::SRHKBN_JYUSYO);
					$this->_main_helper = $this->_shikucyoson_otakara_helper;
				}*/
				// その他キャンペーン
				/* キャンペーン検索を使用するため削除
				else if(array_key_exists('campaign',$this->_params) && is_array($this->_params['campaign']) && is_numeric($this->_params['campaign'][0]))
				{

					$this->_data['selcity'] = $this->_model_sikucyoson->getCampaignShikucyosonData($this->_params);

					// 表示用データに変換
					$this->_model_sikucyoson->convertShikucyosonData($this->_data);
					// 静的URL挿入
					Apm_Bukkenurl::generateSearchStaticUrl($this->_params, $this->_data['Mapping'], Apm_Config_Search::SRHKBN_JYUSYO);
					$this->_main_helper = $this->_shikucyoson_campaign_helper;
				}*/
				else
				{
					$this->_data['selcity'] = $this->_model_sikucyoson->getShikucyosonData($this->_params);
					// 表示用データに変換
					$this->_model_sikucyoson->convertShikucyosonData($this->_data);
					// 静的URL挿入
					Apm_Bukkenurl::generateSearchStaticUrl($this->_params, $this->_data['Mapping'], Apm_Config_Search::SRHKBN_JYUSYO);
					$this->_main_helper = $this->_shikucyoson_helper;
					$this->_data['SelCyoNull'] = '0';
				}
				
				if ($this->_newTemplate) {
					// H1のタイトル
					$this->_data['h1_title'] = "住所から検索　&gt;&gt;　市区町村を選択してください。";
					// ブロックタイトル
					$this->_data['block_title'] = 'エリアで絞り込む';
					// リード文
					$this->_data['block_text'] = Apm_Config_Search::SEOSTR_PREFSTR.'{&nbsp;の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
												.Apm_Config_Search::ALIAS_TYPE.'情報をエリアで絞り込みたい方はこちらから。';
					// canonical
					if (count($this->_params['PrefCd']) == 1) {
						$params = array();
						$params['Category'] = '1.5';
						$params['PrefName'] = Apm_Config_Search::$TODOUFUKEN_NAME_CODE_LIST[$this->_params['PrefCd'][0]];
						$canonical = Apm_Bukkenurl::generateUrlByParametersChiiki($params);
						if (!empty($canonical)) {
							$this->addMetaCanonical($canonical);
						}
					}
				} else {
					// H1のタイトル
					$this->_data['h1_title'] = "住所から検索　&gt;&gt;　市区町村を選択してください。";
					// ブロックタイトル
					$this->_data['block_title'] = 'エリアで絞り込む';
					// リード文
					$this->_data['block_text'] = Apm_Config_Search::SEOSTR_PREFSTR.'{の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
												.Apm_Config_Search::ALIAS_TYPE.'情報をエリアで絞り込みたい方はこちらから。';
					// JavaScript
					$this->addMetaJs('/app/js/search/Selsikucyoson.js');
				}
			}
			// 町名検索
			// （市区町村検索画面で検索時）
			else if (! $this->_model_common->checkvalue($this->_params, "TownCd") && ! $this->_model_common->checkvalue($this->_params, "CityMore"))
			{

				// 物件データの集計
				//$this->_model_cyo->editSum($this->_params);

				$this->_data['seltown'] = array();
				$this->_data['seltown'] = $this->_model_cyo->getCyoData($this->_params);


				if ((0 == strcmp('on', $this->_params['shikikin_nashi'])) || (0 == strcmp('on', $this->_params['reikin_nashi'])) || (0 == strcmp('on', $this->_params['shikireizero'])))
				{
					// w0のLPから来た時は静的URLを使わない
					// 表示用データに変換
					$this->_model_cyo->convertCyoData($this->_data, '1');
				}
				else
				{
					// 表示用データに変換
					$this->_model_cyo->convertCyoData($this->_data);
					// 静的URL挿入
					Apm_Bukkenurl::generateSearchStaticUrl($this->_params, $this->_data['Mapping'], Apm_Config_Search::SRHKBN_JYUSYO);
				}
				if ($this->_newTemplate) {
					// H1のタイトル
					$this->_data['h1_title'] = "住所から検索　&gt;&gt;　町名を選択してください。";
					// ブロックタイトル
					$this->_data['block_title'] = 'エリアで絞り込む';
					// リード文
					$this->_data['block_text'] = Apm_Config_Search::SEOSTR_CITYSTR.'{&nbsp;の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
												.Apm_Config_Search::ALIAS_TYPE.'情報をエリアで絞り込みたい方はこちらから。';
				} else {
					// H1のタイトル
					$this->_data['h1_title'] = "住所から検索　&gt;&gt;　町名を選択してください。";
					// ブロックタイトル
					$this->_data['block_title'] = 'エリアで絞り込む';
					// リード文
					$this->_data['block_text'] = Apm_Config_Search::SEOSTR_CITYSTR.'{の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
												.Apm_Config_Search::ALIAS_TYPE.'情報をエリアで絞り込みたい方はこちらから。';
					// JavaScript
					$this->addMetaJs('/app/js/search/Selcyo.js');
				}

				$this->_main_helper = $this->_cyo_helper;
			}
			// 町名検索
			// （物件一覧画面から遷移時）
			else if (! $this->_model_common->checkvalue($this->_params, "TownCd") && $this->_model_common->checkvalue($this->_params, "CityMore"))
			{
				// 初期設定
				$pageStart = 30;
				$pageCount = 90;

				// 件数を取得
				$this->_data['town_count'] = $this->_model_cyo->getMoreCyoDataCount($this->_params);
				// 町名一覧取得
				$this->_data['seltown'] = array();
				$this->_data['seltown'] = $this->_model_cyo->getMoreCyoData($this->_params, $pageCount, $this->_params['page'], $pageStart);
				// 表示用データに変換
				$this->_model_cyo->convertCyoData($this->_data);
				// 静的URL挿入
				Apm_Bukkenurl::generateSearchStaticUrl($this->_params, $this->_data['Mapping'], Apm_Config_Search::SRHKBN_JYUSYO);

				// 初期件数＋表示件数＜総件数の場合、ページング作成
				$town_count = intval($this->_data['town_count']['CNT']);
				if ($pageStart+$pageCount < $town_count) {
					$this->_data['paging'] = array();
					$pattern = Apm_Bukkenurl::getParamPattern($this->_params, Apm_Config_Search::SRHKBN_JYUSYO);
					for ($page=1; $page<=ceil(($town_count-$pageStart)/$pageCount); $page++)
					{
						// 現在のページはURL作成しない
						if ($page == $this->_params['page']) {
							$url = "";
						} else {
							$this->_params['CityMore'] = $page;
							$url = Apm_Bukkenurl::generateUrlByParameters($this->_params, $pattern, '3.5');
						}
						$this->_data['paging']['page'][$page] = array('page'=>$page, 'url'=>$url);
					}
					// 前のページ
					if (!empty($this->_data['paging']['page'][intval($this->_params['page'])-1])) {
						$this->_data['paging']['page_before'] = $this->_data['paging']['page'][intval($this->_params['page'])-1]['url'];
					}
					// 次のページ
					if (!empty($this->_data['paging']['page'][intval($this->_params['page'])+1])) {
						$this->_data['paging']['page_next']   = $this->_data['paging']['page'][intval($this->_params['page'])+1]['url'];
					}
				}

				if ($this->_newTemplate) {
					// H1のタイトル
					$this->_data['h1_title'] = "住所から検索　&gt;&gt;　町名を選択してください。";
					// ブロックタイトル
					$this->_data['block_title'] = 'エリアで絞り込む';
					// リード文
					$this->_data['block_text'] = Apm_Config_Search::SEOSTR_CITYSTR.'{&nbsp;の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
												.Apm_Config_Search::ALIAS_TYPE.'情報をエリアで絞り込みたい方はこちらから。';
				} else {
					// H1のタイトル
					$this->_data['h1_title'] = "住所から検索　&gt;&gt;　町名を選択してください。";
					// ブロックタイトル
					$this->_data['block_title'] = 'エリアで絞り込む';
					// リード文
					$this->_data['block_text'] = Apm_Config_Search::SEOSTR_CITYSTR.'{の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
												.Apm_Config_Search::ALIAS_TYPE.'情報をエリアで絞り込みたい方はこちらから。';
					// JavaScript
					$this->addMetaJs('/app/js/search/Selcyo.js');
				}

				// HiddenTagに入って物件一覧へページを引きずってしまうため、削除
				if (isset($this->_params['page'])) {
					unset($this->_params['page']);
				}

				$this->_data['CityMore'] = 1;
				$this->_main_helper = $this->_cyo_helper;
			}
			else
			{
				// 処理なし
			}

			// モバイルAPIデータの作成
			$this->mobileApiAct($this->_data['Mapping']);

			// 表示
			//$this->_display_path = APPLICATION_PATH . '/modules/search/views/scripts/search.tpl';

		}
	}
		/**
		 * 静的なパン屑リストの取得
		 *
		 */
		private function setStaticBreadcrumb()
		{
			$this->_breadcrumb->reset();
			$this->_breadcrumb->add(Apm_Config_Search::BREADCRUMB_TOP, $this->_baseurl);
			$this->_breadcrumb->add('住所から賃貸を探す', $this->_baseurl . 'search/jyusyosearch/');
			$this->setBreadCrumb($this->_breadcrumb->generateBreadcrumb());
		}

}
?>